package cn.com.infcn.spider.web.collector;

import java.util.Date;
import java.util.List;

import org.eclipse.jetty.server.Request;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;

import cn.com.infcn.spider.module.ProxyModule;
import cn.com.infcn.spider.util.DateUtil;
import cn.com.infcn.spider.util.MongoDao;
import cn.com.infcn.spider.util.StaticValue;
import cn.com.infcn.spider.util.StringUtil;

import com.alibaba.fastjson.JSONObject;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;

@IocBean
public class ProxyAction {
	@Inject
	private MongoDao mongoDao;
	/**
	 * job列表页
	 * 
	 * @param limit
	 *            从第几条开始
	 * @param size
	 *            每页显示多少条
	 * @param filter
	 *            过滤条件
	 * @param request
	 *            请求
	 */
	@At("/proxy/list")
	@Ok("jsp:/WEB-INF/proxy/proxy_list.jsp")
	public Object list(@Param("page") int page, @Param("rows") int rows, Request request) {
		int size = rows;
		int skip = (page - 1) * rows;
		if (size <= 0) {
			size = 20;
		}
		JSONObject result = new JSONObject();
		try (DBCursor find = mongoDao.getCollection("proxy").find()) {
			List<DBObject> list = find.skip(skip).limit(size).toArray();
			result.put("records", find.count());// 总记录数
			result.put("rows", list);// 数据
		}
		result.put("page", page);// 当前页码
		return result;
	}
	
	/**
	 * 跳转到新增代理页面
	 * 
	 * @param json
	 * @return
	 */
	@At("/proxy/foradd")
	@Ok("jsp:/WEB-INF/proxy/proxy_editor.jsp")
	public void forAddProxy() {
	}
	
	/**
	 * 新增或更新代理
	 * @param obj
	 * @return
	 */
	@At("/proxy/save_or_update")
	@Ok("json")
	public Object saveOrUpdate(@Param("..") ProxyModule obj)
	{
		JSONObject proxyJsonObj = (JSONObject) JSONObject.toJSON(obj);
		DBObject findById = mongoDao.findById("proxy", obj.get__id());
		if(findById != null){
			proxyJsonObj.put("create_date",findById.get("create_date"));
			findById.putAll(proxyJsonObj);
			findById.put("update_date",new Date());
			mongoDao.save("proxy", findById);
		}else
		{
			obj.set__id(StringUtil.generateUUID());
			Date date = new Date();
			obj.setCreate_date(date);
			obj.setUpdate_date(date);
			mongoDao.save("proxy", obj);
		}
		return StaticValue.okMessageJson("保存成功 ！");

	}
	/**
	 * 获取一个代理对象
	 * @param json
	 * @return
	 */
	@At("/proxy/get/?")
	@Ok("jsp:/WEB-INF/proxy/proxy_editor.jsp")
	public Object get(String id) {

		DBObject findById = mongoDao.findById("proxy", id);
		return findById;

	}
	/**
	 * 删除一个代理;
	 * @param jobName
	 * @return
	 */
	@At("/proxy/delete/?")
	@Ok("json")
	public Object delete(String id) {

		DBObject findById = mongoDao.findById("proxy", id);

		if (findById == null) {
			return StaticValue.errMessageJson(id + " not find in db!");
		}
		mongoDao.remove("proxy",findById);
		return StaticValue.OK_J;

	}
}
